package jp.co.toshiba.ffsa.mail;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;

import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.factory.S2ContainerFactory;
import org.seasar.mai.mail.MailAddress;
/**
 * メール送信クラス
 * @author npc
 */
public class SendMaiMail{
    // エラーコード
    @SuppressWarnings("unused")
    private String errorCode        = "";
    // 送信元メールアドレス(From)
    private String mailAddressFrom  = "";
    // 送信先メールアドレス(To)
    private MailAddress[] mailAddressTo;
    // 送信先メールアドレス(Cc)
    private MailAddress[] mailAddressCc;
    // 送信先メールアドレス(Bcc)
    private MailAddress[] mailAddressBcc;
    // 置換え文字列
    private String replacementSubject="";
    // 置換え文字列1
    private String replacementItem1 = "";
    // 置換え文字列2
    private String replacementItem2 = "";
    // 置換え文字列3
    private String replacementItem3 = "";
    // 置換え文字列4
    @SuppressWarnings("unused")
    private String replacementItem4 = "";
    // 置換え文字列5
    @SuppressWarnings("unused")
    private String replacementItem5 = "";
    // 置換え文字列6
    @SuppressWarnings("unused")
    private String replacementItem6 = "";
    // 置換え文字列7
    @SuppressWarnings("unused")
    private String replacementItem7 = "";
    // 置換え文字列8
    @SuppressWarnings("unused")
    private String replacementItem8 = "";
    // 置換え文字列9
    @SuppressWarnings("unused")
    private String replacementItem9 = "";
    // 置換え文字列10
    @SuppressWarnings("unused")
    private String replacementItem10 = "";

    // setter
    /**
     * 送信元メールアドレス(From)
     * @param mailAddressFrom 送信先メールアドレス(From)
     */
    public void setMailAddressFrom(String mailAddressFrom){
        this.mailAddressFrom = mailAddressFrom;
    }
    /**
     * 送信先メールアドレス(To)
     * @param mailAddressTo 送信先メールアドレス(To)
     */
    public void setMailAddressTo(MailAddress[] mailAddressTo){
        this.mailAddressTo = mailAddressTo;
    }
    /**
     * 送信先メールアドレス(Cc)
     * @param mailAddressCc 送信先メールアドレス(Cc)
     */
    public void setMailAddressCc(MailAddress[] mailAddressCc){
        this.mailAddressCc = mailAddressCc;
    }
    /**
     * 送信先メールアドレス(Bcc)
     * @param mailAddressBcc 送信先メールアドレス(Bcc)
     */
    public void setMailAddressBcc(MailAddress[] mailAddressBcc){
        this.mailAddressBcc = mailAddressBcc;
    }
    /**
     * 送信先メールアドレス(subject)
     * @param replacementSubject replacementSubject
     */
    public void setReplacementSubject(String replacementSubject) {
        this.replacementSubject = replacementSubject;
    }
    /**
     * 置換え文字列1
     * @param replacementItem1 置換え文字列1
     */
    public void setReplacementItem1(String replacementItem1){
        this.replacementItem1 = replacementItem1;
    }
    /**
     * 置換え文字列2
     * @param replacementItem2 置換え文字列2
     */
    public void setReplacementItem2(String replacementItem2){
        this.replacementItem2 = replacementItem2;
    }
    /**
     * 置換え文字列3
     * @param replacementItem3 置換え文字列3
     */
    public void setReplacementItem3(String replacementItem3){
        this.replacementItem3 = replacementItem3;
    }
    /**
     * 置換え文字列4
     * @param replacementItem4 置換え文字列4
     */
    public void setReplacementItem4(String replacementItem4){
        this.replacementItem4 = replacementItem4;
    }
    /**
     * 置換え文字列5
     * @param replacementItem5 置換え文字列5
     */
    public void setReplacementItem5(String replacementItem5){
        this.replacementItem5 = replacementItem5;
    }
    /**
     * 置換え文字列6
     * @param replacementItem6 置換え文字列6
     */
    public void setReplacementItem6(String replacementItem6){
        this.replacementItem6 = replacementItem6;
    }
    /**
     * 置換え文字列7
     * @param replacementItem7 置換え文字列7
     */
    public void setReplacementItem7(String replacementItem7){
        this.replacementItem7 = replacementItem7;
    }
    /**
     * 置換え文字列8
     * @param replacementItem8 置換え文字列8
     */
    public void setReplacementItem8(String replacementItem8){
        this.replacementItem8 = replacementItem8;
    }
    /**
     * 置換え文字列9
     * @param replacementItem9 置換え文字列9
     */
    public void setReplacementItem9(String replacementItem9){
        this.replacementItem9 = replacementItem9;
    }
    /**
     * 置換え文字列10
     * @param replacementItem10 置換え文字列10
     */
    public void setReplacementItem10(String replacementItem10){
        this.replacementItem10 = replacementItem10;
    }
    /**
     * Subject
     * @param replacementSubject Subject
     */
    public String getReplacementSubject() {
        return replacementSubject;
    }

    /**
     * メールアドレスチェック
     * @param in_addr in_addr
     * @return true: OK false:NG NULLの場合はfalse
     */
    public boolean chkMailAddr( String in_addr ) {
        if(in_addr==null     ){return false;}
        if(in_addr.equals("")){return false;}
        try{
            new InternetAddress(in_addr, true);
        }catch (AddressException e) {
            return false;
        }
        return true;
    }
    /**
     * メール送信を行う
     * @param 送信対象
     * @return true
     * @throws Exception Exception
     */
    public boolean sendMail(String sendObj) throws Exception{
        S2Container container = S2ContainerFactory.create("mai.dicon");
        SendMailMai mai = (SendMailMai) container.getComponent(SendMailMai.class);
        // 値をセット
        SendMailDto dto = new SendMailDto();
        // 送信元メールアドレス(From)
        dto.setFrom(mailAddressFrom);
        // 送信先メールアドレス(To)
        dto.setTo(mailAddressTo);
        if(mailAddressCc != null){
            // 送信先メールアドレス(Cc)
            dto.setCc(mailAddressCc);
        }
        if(mailAddressBcc != null){
            // 送信先メールアドレス(Bcc)
            dto.setBcc(mailAddressBcc);
        }



        switch (Integer.valueOf(sendObj)) {
        //仮パスワード発行する場合、メール送信
        case 1:
            // 置換え文字列1
            dto.setReplacementItem1(replacementItem1);
            // 置換え文字列2
            dto.setReplacementItem2(replacementItem2);

            mai.sendTmpPwdMail(dto);
            break;
        //ユーザー情報登録した場合、メール送信
        case 2:
            // 置換え文字列1
            dto.setReplacementItem1(replacementItem1);
            // 置換え文字列2
            //dto.setReplacementItem2(replacementItem2);

            mai.sendInfoRegMail(dto);
            break;
        //登録完了(顧客)
        case 3:
            // 置換え文字列1
            dto.setReplacementItem1(replacementItem1);
            mai.sendCompletedMailToCustomer(dto);
            break;
        //登録完了(管理者)
        case 4:
            // 置換え文字列1
            dto.setReplacementItem1(replacementItem1);
            mai.sendCompletedMailToAdministrator(dto);
            break;
        //パスワード更新した場合、メール送信
        case 5:

            mai.sendPwdUpdMail(dto);
            break;
        //お問い合わせメール送信
        case 6:

            dto.setReplacementItem1(replacementItem1);
            dto.setReplacementItem2(replacementItem2);
            dto.setReplacementItem3(replacementItem3);

            mai.sendInquiryMail(dto);
            break;
        //プロジェクト更新完了(顧客)
        case 7:
            // 置換え文字列
            dto.setReplacementItem1(replacementItem1);
            mai.sendUpdProjectMailToCustomer(dto);
            break;
        //プロジェクト更新完了(管理者)
        case 8:
            // 置換え文字列
            dto.setReplacementItem1(replacementItem1);
            dto.setReplacementItem2(replacementItem2);
            dto.setReplacementItem3(replacementItem3);
            mai.sendUpdProjectMailToAdministrator(dto);
            break;
        //ES受領確認
        case 9:
            // 置換え文字列
            dto.setReplacementItem1(replacementItem1);
            dto.setReplacementItem2(replacementItem2);
            mai.sendUpdESCheck(dto);
            break;
        //プロジェクト作成確認
        case 10:
            // 置換え文字列
            dto.setReplacementItem1(replacementItem1);
            dto.setReplacementItem2(replacementItem2);
            mai.sendNewProject(dto);
            break;

        default:
            mai.sendMail(dto);
            break;

      }

        return true;
    }
}